Mungkin nanti untuk penjelasan syntaxnya. Kita praktikan juga kalau misalnya pakai gimana, kalau nggak pakai gimana gitu. Ya nambah-nambahin durasi bisa lah.

Plot 1

library(gapminder)
library(tidyverse)

gapminder
# A tibble: 1,704 x 6
   country     continent  year lifeExp      pop gdpPercap
   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
 1 Afghanistan Asia       1952    28.8  8425333      779.
 2 Afghanistan Asia       1957    30.3  9240934      821.
 3 Afghanistan Asia       1962    32.0 10267083      853.
 4 Afghanistan Asia       1967    34.0 11537966      836.
 5 Afghanistan Asia       1972    36.1 13079460      740.
 6 Afghanistan Asia       1977    38.4 14880372      786.
 7 Afghanistan Asia       1982    39.9 12881816      978.
 8 Afghanistan Asia       1987    40.8 13867957      852.
 9 Afghanistan Asia       1992    41.7 16317921      649.
10 Afghanistan Asia       1997    41.8 22227415      635.
# ... with 1,694 more rows
plot1_static <- ggplot(data = gapminder)+
  geom_point(
    aes(x = gdpPercap,
        y = lifeExp,
        size = pop,
        color = continent),
    alpha = 0.8,
    show.legend = F)+
  # pisah per continent
  facet_wrap(~continent)+
  # skala jadiin logaritma aja
  scale_x_log10()+
  # biar titiknya nggak kecil-kecil amat
  scale_size(range = c(2, 12))+
  theme_bw()

plot1_static

library(gganimate)
plot1_animasi <- plot1_static +
  # transition time akan membuat frame-frame yang akan ditunjukkan untuk tiap tahunnya
  transition_time(year)+
  # perhatikan title akan berubah untuk setiap frame time
  labs(
    title = "Tahun : {frame_time}",
    x = "Pendapatan Perkapita",
    y = "Usia Harapan Hidup")

#pengaturan animasi nframes adalah banyaknya frame, sedangkan fps adalah frame per seconds
animate(plot1_animasi,
        nframes = 300,
        fps = 30)

Plot 2

plot2_static <- gapminder %>%
  #ambil negara
  filter(
    country %in% c("Indonesia", "Malaysia", "Cambodia",
                   "Vietnam", "Thailand", "Singapore")) %>%
  ggplot(aes(x = year,
          y = lifeExp,
          group = country))+
    geom_line(
      aes(color = country),
      size = 1.5,
      show.legend = F)+
    geom_label(
      aes(label = country),
      alpha = 0.6)+
    labs(
      title = "Perkembangan Usia Harapan Hidup tiap Tahun",
      y = "Angka Harapan Hidup",
      x = "Tahun")+
    theme_bw()

plot2_static

plot2_animasi <- plot2_static +
  #transition reveal akan menunjukkan transisi secara sekuensial sehingga tiap tahun akan dihold dahulu, lalu ditunjukkan secara perlahan
  transition_reveal(year)+
  #enter drift agar memberikan efek pergeseran untuk frame baru yang muncul
  enter_drift()

# buat animasi
animate(plot2_animasi,
        nframes = 300,
        fps = 30)

Plot 3

library(nycflights13)
library(lubridate)


flights
# A tibble: 336,776 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 1  2013     1     1      517            515         2      830            819
 2  2013     1     1      533            529         4      850            830
 3  2013     1     1      542            540         2      923            850
 4  2013     1     1      544            545        -1     1004           1022
 5  2013     1     1      554            600        -6      812            837
 6  2013     1     1      554            558        -4      740            728
 7  2013     1     1      555            600        -5      913            854
 8  2013     1     1      557            600        -3      709            723
 9  2013     1     1      557            600        -3      838            846
10  2013     1     1      558            600        -2      753            745
# ... with 336,766 more rows, and 11 more variables: arr_delay <dbl>,
#   carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
#   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
# hitung berapa penerbangan tiap hari
n_flights <- flights %>%
  mutate(
    date = make_date(year, month, day)) %>%
  group_by(date) %>%
  count(date) %>%
  ungroup()

n_flights
# A tibble: 365 x 2
   date           n
   <date>     <int>
 1 2013-01-01   842
 2 2013-01-02   943
 3 2013-01-03   914
 4 2013-01-04   915
 5 2013-01-05   720
 6 2013-01-06   832
 7 2013-01-07   933
 8 2013-01-08   899
 9 2013-01-09   902
10 2013-01-10   932
# ... with 355 more rows
# tambahkan hari dan bulan
n_flights <- n_flights %>%
  mutate(
    day = wday(date, label = T, abbr = F),
    month = month(date, label = T, abbr = F))

plot3_static <- ggplot(data = n_flights,
       aes(x = day,
           y = n,
           fill = day))+
  geom_boxplot(show.legend = F,
               alpha = 0.8)+
  theme_bw()+
  scale_fill_brewer(type = "qual",
                    palette = 3)
plot3_static

plot3_animasi <- plot3_static +
  # states akan memberikan efek pergantian states. Sama seperti transition time. Perbedaannya dengan transition time, transition state tidak akan menginterpolasi antar frame nya.
  transition_states(month)+
  # untuk memberikan efek muncul secara perlahan
  enter_appear()+
  # memberikan efek menghilang secara perlahan
  exit_fade()+
  # perhatikan judul akan berubah untuk setiap state
  labs(
    title = "Bulan : {closest_state}",
    x = "",
    y = "Count")

animate(plot3_animasi,
        nframes = 300,
        fps = 30)

Plot 4

plot4_static <- n_flights %>%
  # hitung banyaknya penerbangan tiap bulan
  count(month,
        wt = n) %>%
  ungroup() %>%
  # buat barplot
  ggplot(
    aes(x = month,
        y = n,
        fill = month))+
    geom_col(show.legend = F)+
    labs(title = "Count of Flights in 2013 from NYC",
         y = "count")+
    theme_bw()

plot4_static

plot4_animasi <- plot4_static +
  # tunjukkan barplot untuk setiap bulan
  transition_states(month)+
  # untuk meninggalkan jejak barplot, berikan shadow mark
  shadow_mark() +
  # untuk membuat efek tidak muncul secara tiba-tiba
  enter_grow()

animate(plot4_animasi,
        nframes = 360,
        fps = 30)